In a computer system, the synchronization of either real or virtual clocks to a reference time is an iterative and ongoing process as the computer system runs. Without synchronization updates on a periodic basis, time differences on the order of several seconds a day are common even on server class computer hardware in a temperature-controlled environment.
Official reference times originate from a common time scale in agreement with national laboratories around the world. Reference times are disseminated by telephone, long- and short-wave radio stations and a constellation of satellites in orbit around the earth. Computers connect to reference time sources via telephone modems or radio receivers. Often, these computers then distribute the reference time over a computer network via Network Time Protocol (NTP) or Precision Time Protocol (PTP). The transfer of time from one form to another and across computer networks introduces issues. From a mathematical standpoint, the transfer introduces delays and randomness. From a security standpoint, transferring time between systems introduces the opportunity for tampering and intentional error. From an implementation standpoint, connecting servers directly to reference time sources via a telephone modem or radio receiver is frequently not practical. Most radio clocks, for example, cost several thousand dollars and require an antenna with a clear view of the sky in order to compensate for the diurnal variation of the ionosphere and ensure accurate time transfer from primary time reference sources.
As a result of the difficulty and expense in obtaining reference time directly from a primary time synchronization reference, most sites simply rely on the reference time provided by a network of servers available over the internet. While convenient, the ad-hoc nature of this solution puts compliance with government-mandated record keeping requirements at risk. Although NTP has the capability for secure time transfer, this feature can be difficult to configure and manage, and secure time transfer via NTP is only available from a few reference time providers today.
In virtual computing environments, accurate timekeeping challenges can be compounded due to the sensitivity of time synchronization algorithms to randomness. Since virtual machines on a single host generally share the same physical hardware, the random error introduced due to kernel scheduling latency and resource contention can lead to high clock jitter. A common algorithmic solution to correcting large amounts of accumulated jitter is to directly step the clock to the reference time. Unfortunately, this solution can lead to a breakdown in the “happens before” relationship that is the foundation of many distributed computing algorithms. As a result, the overall stability and reliability of the entire virtual environment could be compromised if the system software has not been carefully coded and tested.